/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2023-10-06     qsy       the first version
 */
#ifndef APPLICATIONS_OLEDDISPLAYCODE_H_
#define APPLICATIONS_OLEDDISPLAYCODE_H_

#include <rthw.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <u8g2_port.h>
#include <stdio.h>
#include <u8g2.h>

#define SEND_TRUE                           1   //发送到oled
#define SEND_FALSE                          0   //不发送到oled

//目标结构体指针
u8g2_t u8g2;

//---------------传参参考----------------------------
//结构体指针传参     &u8g2
//字体传参参考         u8g2_font_ncenB08_tr   （可进入宏定义文件中修改字体、大小）


//--------------oled初始化---------------------------
extern void OledDisplayInit(u8g2_t *u8g2);

//--------------显示变量的数字---------------------------
//u8g2_t *u8g2                  结构体指针
//u8g2_uint_t x, u8g2_uint_t y  x\y坐标
//const uint8_t *font           字体
//short var                     要传入的变量
extern void PrintVarFormat(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, const uint8_t *font, float var, rt_uint8_t send);

//--------------显示文字---------------------------
//u8g2_t *u8g2                  结构体指针
//u8g2_uint_t x, u8g2_uint_t y  x\y坐标
//const uint8_t *font           字体
//char * text                   要传入的字符指针
//rt_uint8_t send               SEND_TRUE 发送到oled  SEND_FALSE 不发送
extern void PrintTextFormat(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, const uint8_t *font, char * text, rt_uint8_t send);

//--------------显示xbm图片---------------------------
//u8g2_t *u8g2                  结构体指针
//u8g2_uint_t x, u8g2_uint_t y  x\y坐标
//u8g2_uint_t w, u8g2_uint_t h  图像的宽、高
//const uint8_t *bitmap         xbm数组指针
//rt_uint8_t send               SEND_TRUE 发送到oled  SEND_FALSE 不发送
extern void PrintImageFormat(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap, rt_uint8_t send);

//--------------显示图形字符---------------------------
//需要找到对应的字体、和字形索引
//参考  https://github.com/olikraus/u8g2/wiki/fntgrpiconic  或
//https://www.jerrycoding.com/tool/u8g2lib/#:~:text=U8g2%E5%AD%97%E4%BD%93%E5%BA%93%E5%A4%A7%E5%85%A8,%28%E9%A2%84%E8%A7%88%E5%9B%BE%29%EF%BC%8C%E6%9D%A5%E8%87%AAhttps%3A%2F%2Fgithub.com%2Folikraus%2Fu8g2%2Fwiki%2Ffntgrpiconic
//u8g2_t *u8g2                  结构体指针
//u8g2_uint_t x, u8g2_uint_t y  x\y坐标
//const uint8_t *font           字体
//char * text                   字符索引
//rt_uint8_t send               SEND_TRUE 发送到oled  SEND_FALSE 不发送
extern void PrintIconicFormat(u8g2_t *u8g2, u8g2_uint_t x, u8g2_uint_t y, const uint8_t *font, uint16_t encoding, rt_uint8_t send);

//--------------测试---------------------------
extern void OledDisplayCheck(void);

#endif /* APPLICATIONS_OLEDDISPLAYCODE_H_ */
























